package asem.tablaSimbolos;

import java.io.FileWriter;
import java.io.IOException;

import alex.Token;
import asem.tablaSimbolos.tipo.Tipo;

public class AtributoDeInstancia extends Variable {

	private Token identificador;
	private Tipo tipo;
	private String perteneceA;
	private int offset;

	public AtributoDeInstancia(Token identificador, Tipo tipo,
			String perteneceA, int offset) {
		this.identificador = identificador;
		this.tipo = tipo;
		this.perteneceA = perteneceA;
		this.offset = offset;
	}

	public AtributoDeInstancia() {
		identificador = null;
		tipo = null;
		perteneceA = null;
	}

	public String getPerteneceA() {
		return perteneceA;
	}

	public void setPerteneceA(String perteneceA) {
		this.perteneceA = perteneceA;
	}

	public String getNombre() {
		return identificador.getLexema();
	}

	public Tipo getTipo() {
		return tipo;
	}

	public int getOffset() {
		return offset;
	}

	public void setOffset(int offset) {
		this.offset = offset;
	}

	public void setNombre(String nombre) {
		identificador.setLexema(nombre);
	}

	public Token getIdentificador() {
		return identificador;
	}

	public void imprimirInfo(FileWriter archivoSalida) {

		try {
			archivoSalida
					.write(String
							.format("        - Atributo '%s'. Tipo: '%s'. Pertenece a: '%s'. Offset: '%d'.\n",
									identificador.getLexema(), tipo.toString(),
									this.perteneceA, this.offset));
		} catch (IOException e) {
			System.out
					.printf("Error al intentar escribir el archivo de salida. ");
		}

	}

}
